//商品购物车js
let en_js = require('/environment.js');

//保存购物车信息
function saveCartInfo(info) {
  wx.setStorageSync(en_js.cartInfoKey, info);
}

//获取用户信息
function cartInfo() {
  let value = wx.getStorageSync(en_js.cartInfoKey);
  if (value) {
    return value;
  } else {
    return null;
  }
}

//增加购物车
function addCart(skuItem, skuID, count) {
  let value = cartInfo();
  if (value) {
    //count list 
    value.count = value.count + count;
    var tmpMap = new Map(value.list);
    if (tmpMap.get(skuID)) {
      var goodsItem = tmpMap.get(skuID);
      goodsItem.num = goodsItem.num + count;
      tmpMap.set(skuID, goodsItem);
    } else {
      var obj = {};
      obj.count = count;
      skuItem.num = count;
      tmpMap.set(skuID, skuItem);
    }
    value.list = [...tmpMap];
    saveCartInfo(value);
    //更新购物车数量
    updateTabBarCount(value.count);
  } else {
    var obj = {};
    obj.count = count;
    skuItem.num = count;
    //map
    var tmpMap = new Map();
    tmpMap.set(skuID, skuItem);
    obj.list = [...tmpMap];
    saveCartInfo(obj);
    //更新购物车数量
    updateTabBarCount(obj.count);
  }
}

//更新购物车数量
function updateTabBarCount(num) {
  if (num >= 0) {
    wx.setTabBarBadge({
      index: 2,
      text: (num + '')
    })
    return;
  }
  let value = cartInfo();
  if (value) {
    wx.setTabBarBadge({
      index: 2,
      text: (value.count + '')
    })
  }
}

//初始化购物车数量
function initCartTabBarCount() {
  let value = cartInfo();
  if (value) {
    updateTabBarCount(value.count);
  } else {
    updateTabBarCount(0);
  }
}

//减少购物车,包括删除购物车
function minusCart(skuId, count) {
  let value = cartInfo();
  if (value) {
    value.count = value.count - count;
    var tmpMap = new Map(value.list);
    var goodsItem = tmpMap.get(skuId);
    if (!goodsItem) return;
    goodsItem.num = goodsItem.num - count;
    if (goodsItem.num < 0) {
      goodsItem.num = 0;
    }
    if (goodsItem.num == 0) {
      //
      delete tmpMap[skuId];
    } else {
      tmpMap.set(skuId, goodsItem);
    }
    saveCartInfo(value);
    //更新购物车数量
    updateTabBarCount(value.count);
  }
}

//根据skuId获取购物车中限时抢购商品的数量
function limitSkuCountWithSkuId(skuId) {
  let value = cartInfo();
  if (value) {
    var tmpMap = new Map(value.list);
    var goodsItem = tmpMap.get(skuId);
    if (goodsItem) {
      return goodsItem.num;
    }
    return 0;
  } else {
    return 0;
  }
}

//获取购物车的数量
function count() {
  let value = cartInfo();
  if (value) {
    if (value.count >= 0) {
      return value.count;
    }
    //清空购物车
    clearCart();
    return 0;
  }
  return 0;
}

//清空购物车
function clearCart() {
  wx.removeStorageSync(en_js.cartInfoKey);
  updateTabBarCount(0);
}


//根据请求过来的购物车数据，刷新购物车存量
function updateCartWithSkuList(skuList) {
  var obj = {};
  obj.count = 0;
  var tmpMap = new Map();
  skuList.forEach(item => {
    obj.count += item.num;
    tmpMap.set(item.skuId, item);
  });
  obj.list = [...tmpMap];
  saveCartInfo(obj);
  //更新购物车数量
  updateTabBarCount(obj.count);
}

//根据传过来的商品skuList,点击选择，并且选择过的商品价格和数量信息
//status，1，全部选中， 2全部不选
function selectedCarInfoWithSkuList(skuList, status) {
  var obj = {};
  if (!skuList || skuList.length == 0) return obj;

  obj.count = 0; //当前选中的数量
  obj.totalCount = 0; //能够选中的总数量
  obj.price = 0; //当前选中的总价格
  obj.isSelctedAll = false; //是否全部选中
  obj.skuList = [];
  if (!status) {
    status = -1;
  }
  skuList.forEach(item => {
    if (item.type == 0 && !item.checkFlag) {
      return;
    }
    //2.限购商品
    if (item.type == 2 && item.stockLeft < item.num && !item.checkFlag) {
      return;
    }

    obj.totalCount += parseInt(item.num);
    if (status == 2) {
      item.selected = false;
    } else if (status == 1) {
      item.selected = true;
    }
    if (item.selected) {
      obj.count += parseInt(item.num);
      if (item.type == 0) {
        obj.price += (parseInt(item.num) * parseFloat(item.price));
      } else if (item.type == 2) {
        //限购---单独判断
        var promotionNum = parseInt(item.num);
        var originalNum = 0;
        if (promotionNum > item.stockLeft) {
          promotionNum = item.stockLeft;
        }
        if (promotionNum > item.userBuyLimit) {
          promotionNum = item.userBuyLimit;
        }
        originalNum = parseInt(item.num) - promotionNum;
        obj.price += (promotionNum * parseFloat(item.promotionPrice) + originalNum * parseFloat(item.price));
      }
      //拼团商品不如购物车
    }
  });
  //四舍五入
  obj.price = (obj.price).toFixed(2);
  if (obj.count == obj.totalCount) {
    obj.isSelctedAll = true;
  }
  obj.skuList = skuList;
  return obj;
}

//获取结算购物车skuList参数
function paymentSkuList(skuList) {
  var list = [];
  skuList.forEach(item => {
    if (item.selected) {
      var obj = {};
      obj.num = item.num;
      obj.skuId = item.skuId;
      obj.type = 1;
      obj.productId = item.productId;
      list.push(obj);
    }
  });
  return list;
}

//当前商品是否已售罄，不用判断团购，单一商品购买使用
function skuHasStock(item) {
  if (item.type == 0) {
    if (item.stock) {
      return true;
    } else {
      return false;
    }
  } else if (item.type == 2) {
    if (item.stockLeft) {
      return true;
    } else {
      return false;
    }
  }
  return false;
}

module.exports = {
  addCart: addCart,
  minusCart: minusCart,
  count: count,
  limitSkuCountWithSkuId: limitSkuCountWithSkuId,
  updateCartWithSkuList: updateCartWithSkuList,
  selectedCarInfoWithSkuList: selectedCarInfoWithSkuList,
  paymentSkuList: paymentSkuList,
  initCartTabBarCount: initCartTabBarCount,
  updateTabBarCount: updateTabBarCount,
  skuHasStock: skuHasStock,
  clearCart: clearCart
}